package com.append.design.simplefactory.example;

public class BossSimplyFactory {
	/**
	 * 
	 * 工厂类角色：这是本模式的核心，含有一定的商业逻辑和判断逻辑，根据逻辑不同，产生具体的工厂产品。如例子中的Driver类。
	 * 抽象产品角色：它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的Car接口。
	 * 具体产品角色：工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现，如例子中的Benz、Bmw类。
	 * 
	 * 当暴发户增加了一辆车的时候，只要符合抽象产品制定的合同，那么只要通知工厂类知道就可以被客户使用了。（即创建一个新的车类，继承抽象产品Car）那么
	 * 对于产品部分来说，它是符合开闭原则的——对扩展开放、对修改关闭；但是工厂类不太理想，因为每增加一辆车，都要在工厂类中增加相应的商业逻辑和判
	 * 断逻辑，这显自然是违背开闭原则的。
	 * 
	 * @author lijin
	 * @param args
	 * @time 2018年5月14日 下午4:44:48
	 */
	public static void main(String[] args) {
		// 老板告诉司机我今天坐奔驰
		Car car = Driver.createCar("benz");
		car.setName("benz");
		// 司机开着奔驰出发
		car.drive();
	}
}
